
Nous sommes un groupe de 4 étudiants de
l’Université de Technologie de Troyes et, dans le cadre
de notre formation, nous réalisons un projet pour l’enseignement
“IF36 – Visualisation de données”.
Notre objectif est d’analyser un jeu de données de
notre choix de manière approfondie.
Nous avons choisi de travailler sur un jeu de données
ouvert provenant de plusieurs sources françaises, notamment
SNCF et Île-de-France Mobilités.
Ce jeu de données offre une vue détaillée du réseau de
transport ferroviaire en France, incluant :
Ce dataset nous permet de mieux comprendre les dynamiques du réseau ferré français, aussi bien en termes de régularité que de fréquentation.
Avant de pouvoir effectuer nos analyses et visualisations, nous avons dû procéder à un important travail de nettoyage des données, comprenant :
Nous avons également supprimé les données concernant les gares étrangères, afin de concentrer notre étude uniquement sur le territoire français.
Nous avons tout d’abord importé notre jeu de données à l’aide des librairies dplyr et readr.
2. Suppression de colonnes inutiles
Certaines colonnes, contenant uniquement des commentaires textuels (“Comment (optional) delays at departure” et “Comment (optional) delays on arrival”), sont supprimées car elles ne sont pas pertinentes pour notre analyse.
3. Nettoyage des noms de colonnesPour faciliter l’utilisation du dataset, nous avons standardisé les noms de colonnes :
Notre analyse portant exclusivement sur la France métropolitaine, nous avons filtré les données pour supprimer les trajets passant par certaines gares étrangères (Suisse, Allemagne, Italie, Espagne).
5. Analyse des données manquantesEnfin, nous avons calculé le nombre de lignes contenant au moins une valeur manquante (NA) pour évaluer la qualité globale du dataset. Nous avons également extrait ces lignes pour une éventuelle analyse plus poussée.
## [1] 94
Résultat attendu
Affichage du nombre de lignes contenant des valeurs manquantes (nombre_NA)
Création d’un sous-ensemble data_NA avec uniquement les lignes incomplètes.
Dans un premier temps, on aimerait avoir une vision globale des données, afin de pouvoir relever par exemple les gares les plus importantes, qui constituent la majeur partie du trafic, ou bien celle qui ont les retards moyens les plus importants… Pour cela, nous allons produire quelques visualisations simples, pour se familiariser avec le jeu de données. Nous allons ici voir trois visualisations différentes :
Ce graphique nous donne une idée de la répartition de la durées des trajets en france, et nous permet de nous rendre compte des points suivants :
Ce graphique nous permet de voir les temps moyens de trajet en fonction des gares. Cela est utile pour la suite, car nous allons certainemenent chercher à correler les données des gares avec les retards moyen. Avoir eu cette visualisation en premier lieu nous permet de choisir quelles gares pourraient être interessantes à analyser (les gares avec les trajets moyens les plus longs, les plus courts, ou entre les deux). On peut aussi se faire une idée du type de trajet pour chaque gares :
Ce graphique nous permet de voir la fréquentation totale (départs + arrivées) des différentes gares pour l’année 2019. Il est utile pour la suite de notre analyse, car il nous permet d’identifier quelles gares génèrent le plus de trafic ferroviaire.Ces gares auront probablement un impact plus important sur les analyses de retards globaux, et mériteront donc une attention particulière.
Grâce à cette visualisation, nous pouvons faire plusieurs observations immédiates :
Les gares situées en haut du classement (comme Paris Gare de Lyon, Paris Montparnasse, ou Lyon Part-Dieu) sont logiquement des hubs majeurs du réseau SNCF.
Certaines gares régionales (comme Marseille, Lille ou Bordeaux Saint-Jean) apparaissent également, ce qui montre leur importance dans les flux nationaux.
La concentration du trafic sur un nombre relativement restreint de gares implique que des retards dans ces gares pourraient avoir des effets “cascades” plus forts sur l’ensemble du réseau.
Ce graphique est très utile pour guider nos prochaines étapes :
Sélectionner les gares à analyser en priorité (celles avec la plus forte fréquentation).
Comparer les taux de retard selon la fréquentation des gares.
Mieux structurer notre dashboard final : nous pourrons choisir d’afficher des indicateurs spécifiques sur les gares les plus actives.
Enfin, travailler uniquement sur l’année 2019 est important ici :
En agrégeant plusieurs années, nous aurions “écrasé” des variations annuelles importantes (par exemple des années impactées par des grèves ou la crise Covid). Cela nous permet de garder une vision plus précise et réaliste de l’activité sur une année “type”.
On peut aussi noter que les gares les plus fréquentées ne sont pas les gares avec les temps de trajets les moyens les plus longs, ce qui nous évitera de chercher une correlation la ou il n’y en a pas.Question 0
ecrire ici reponse 0
Question 1
Dans les graphes suivants :
Il est possible de zoomer sur une période précise (exemple : uniquement l’année 2019) pour mieux analyser les pics de retard.
On peut montrer/cacher certaines courbes (ex : n’afficher que les retards > 60 min).
Il y a également un pop-up interactif qui s’affiche au survol, montrant les valeurs exactes.
Certains graphiques sont actuellement affiché pour 2019.
Plus tard, avec Shiny, nous ajouterons un slider interactif pour choisir l’année dynamiquement.
##
## Attachement du package : 'plotly'
## L'objet suivant est masqué depuis 'package:ggplot2':
##
## last_plot
## L'objet suivant est masqué depuis 'package:stats':
##
## filter
## L'objet suivant est masqué depuis 'package:graphics':
##
## layout
##
## Attachement du package : 'lubridate'
## Les objets suivants sont masqués depuis 'package:base':
##
## date, intersect, setdiff, union
Ce graphique présente la répartition des trains selon leur ponctualité :
Chaque saison est marquée par une ligne verticale pointillée et un label (“Hiver”, “Printemps”, “Été”, “Automne”).
Pas possible d’être possible à la date près (car uniquement des données du mois et pas de jours) donc on a arrondis au mois (exemple : 21 décembre -> 1er janvier pour le début de l’hiver.)
Hypothèse : influence de l’affluence estivale, vacances scolaires, travaux d’été.
Hypothèse : problèmes organisationnels en gare : gestion de flux, embarquement, correspondances, grèves.
Hypothèse : aléas pendant le trajet (accidents, incidents techniques, météo)
On détaillera cela dans une prochaine question.
Grâce aux différents graphiques réalisés, nous pouvons conclure :
Bien que l’analyse porte sur l’année 2019, les mêmes tendances générales semblent observables sur 2015–2020.
Plus tard, avec Shiny, nous créerons une application interactive qui permettra : - De filtrer dynamiquement par année, par gare, par saison, - D’explorer les retards ferroviaires plus efficacement et en temps réel.
Cela permettra de confirmer ou nuancer les tendances mises en évidence ici.
Nous voulons savoir quelle sont les principales causes de retard. Pour cela, nous calculons la moyenne pour chaque liaison de la proportion des causes.
Ce graphique représente la proportion de cause des retards référencés dans le dataset. Ces causes sont divisées en plusieurs catégories :
Nous avons maintenant une certaine idée de la proportion de chaque cause, mais ce chiffre n’est possiblement pas tout le temps le même. Ici, nous calculons alors de la même manière la proportion de retards, mais cette fois-ci pour chaque mois.
Ce graphique, sous forme de stacked bar plot, décrit les proportions de causes de retard des trains selon les mois, classés dans l’ordre chronologique. Les causes sont les mêmes que celles évoquées dans le précédent graphique
On peut alors voir que les proportions restent sensiblement les même pour la plupart chaque mois, mais on observe tout de même des différences notables lorsqu’on observe plus en détail :
Les retards pour causes extérieures sont moins fréquentes en été. Cela peut s’expliquer par la météo, plus clémente pour le réseau ferroviaire en cette période
On observe un pic de retard à cause de l’infrastructure ferroviaire en avril et juin. On peut alors supposer que la SNCF choisit ces dates pour entreprendre des travaux de maintenance. En effet, ces dates sont proches des vacances d’été et donc proches des fortes affluences qu’il faut préparer.
Aux mois de juillet et aout, les retards liés aux passagers sont plus importants qu’aux autres mois. Cela peut être dû à la forte affluence amenée par les vacances d’été, entraînant des problèmes d’organisation.
La temporalité n’est pas le seul facteur qui pourrait influencer les causes de retard. En effet, celles-ci peuvent être influencées par l’emplacement de la gare, selon la météo ou la voirie à l’emplacement concerné par exemple.
### Explication du graphe
Ce graphique, sous forme de heatmap, décrit les proportions de causes de retard des trains selon les stations de départ. Plus la proportion d’une cause de retard est grande, plus la case correspondante tend vers le rouge foncé.
On peut alors voir que les proportions restent sensiblement les même pour la plupart pour chaque station, mais on observe tout de même des disparités notables dans certains cas :
Les retards pour causes extérieures sont plus fréquents dans les villes de Brest, Perpignan et Quimper. Deux de ces villes étant en Bretagne, il est possible de se dire que le climat de la région amène à plus de retard.
On observe une plus grande proportion de retard à cause de l’infrastructure ferroviaire au Mans, à Angoulême, à Poitiers ou encore à Angers. On peut alors supposer, puisque les villes sont plus ou moins proches les unes des autres, que ces travaux de maintenance on eu lieu sur les mêmes infrastructures.
On a donc appris que les causes de retard les plus fréquentes étaient les causes extérieures et l’infrastructure ferroviaire. Malgré cette tendance remarquée, ces causes peuvent varier selon le temps et les stations concernées.
Nous examinons la relation entre la durée moyenne d’un trajet et le retard moyen à l’arrivée Deux approches :
## `geom_smooth()` using formula = 'y ~ x'
Axe X : La durée moyenne des trajets du dataset. Axe Y : retard moyen à l’arrivée. Chaque point = une liaison ; Ligne rouge = régression linéaire.
Nuage très dispersé, on voit quelques valeurs extrêmes (> 200 min de retard) qui tirent la pente vers le haut.
## `geom_smooth()` using formula = 'y ~ x'
Identique au précédent, on enlève les outliers problématiques pour ajuster le graphique et qu’il soit plus représentatif.
Dispersion verticale quasiment constante jusqu’à ~180 min ; au-delà, la variabilité augmente.
Les retards extrêmes observés sur la première figure sont soit des erreurs soit le résultat d’erreur de données La durée du trajet n’explique qu’une petite partie des retards, d’autres facteurs (infrastructure, matériel, trafic, météo…) sont très sûrement en cause.
Chaque boîte correspond à une tranche de 30 min de durée. Elle montre la distribution du retard moyen pour une tranche de durée du trajet.
Médiane proche de 6 min jusqu’à la tranche 120-150 min, puis hausse continue. Les valeurs atypiques s’allongent après 180 min, on peut observer que les longs trajets ont plus souvent des retards supérieur à 30 min.
Les trajets courts subissent plutôt des petits retards mais fréquents.
La durée du trajet contribue aux retards, surtout quand elle dépasse 3 heures.
En retirant les outliers, la corrélation devient modeste, les retards se jouent sur une multitude de facteurs plus que sur la distance du trajet.
Pour comprendre les causes, il faudra donc croiser la durée par exemple avec :
-Type de ligne. -Période/saison.
Et dans un second temps regarder les catégorie de cause déjà présentes comme l’infrastructure, le matériel ou les voyageurs
3.1 Comment la ponctualité évolue-t-elle au fil des mois ?
3.1.1 Explication du graphe
Ce graphique présente l’évolution mensuelle des retards de trains en France de 2015 à 2020.
On y observe deux informations superposées :
La ligne verte correspond au nombre de trains arrivés à l’heure chaque mois.
Les surfaces colorées empilées représentent le nombre de trains en retard, répartis selon la durée :
3.1.2 Ce qu’on observe